<?php

require_once('conf/DBConnection.php');
require_once('dao/DAO.php');

class NoticiasDAO extends DAO {

	function NoticiasDAO() {}

	function get($id) {
		DBConnection::getInstance();
		$query = "SELECT * FROM `noticias` where id = $id";
		$result = mysql_query($query);
		$results = $this->getFromResult($result);
		return $results[0];
	}

	function find($criteria){
		DBConnection::getInstance();
		$conditions = $this->getConditions($criteria);
		$query = "SELECT * FROM `noticias` WHERE 1=1 $conditions";
		//echo $query;
		$result = mysql_query($query);	
		return $this->getFromResult($result);
	}
	
	function deleteFisico($id){
		DBConnection::getInstance();
		$conditions = $this->getConditions($criteria);
		$query = "DELETE FROM noticias WHERE id = $id";
		$result = mysql_query($query);
		return parent::checkError($result);
	}

	
	function delete($id){
		DBConnection::getInstance();
		$query = "UPDATE noticias SET borrado = 1 WHERE id = %ID%";
		$query = str_replace('%ID%', $id, $query);
		$result = mysql_query($query);
		return parent::checkError($result);
	}

	
	function insert($vo) {
		DBConnection::getInstance();
		$query = "INSERT INTO noticias(`id`, `titulo`, `tags`, `resumen`, `contenido`, `fecha`, `categoria`, `seccion`, `orden`, `visitas`, `activo`, `borrado`) VALUES
            		(%ID%, '%TITULO%', '%TAGS%', '%RESUMEN%', '%CONTENIDO%', '%FECHA%', '%CATEGORIA%', '%SECCION%', '%ORDEN%', '%VISITAS%', '%ACTIVO%', '%BORRADO%')";
		$query = str_replace('%ID%', 'null', $query);
		$query = str_replace('%TITULO%', $vo->getTitulo(), $query);
		$query = str_replace('%TAGS%', $vo->getTags(), $query);
		$query = str_replace('%RESUMEN%', $vo->getResumen(), $query);
		$query = str_replace('%CONTENIDO%', $vo->getContenido(), $query);
		$query = str_replace('%FECHA%', $vo->getFecha(), $query);
		$query = str_replace('%CATEGORIA%', $vo->getCategoria(), $query);
		$query = str_replace('%SECCION%', $vo->getSeccion(), $query);
		$query = str_replace('%ORDEN%', $vo->getOrden(), $query);
		$query = str_replace('%VISITAS%', $vo->getVisitas(), $query);
		$query = str_replace('%ACTIVO%', 1, $query);
		$query = str_replace('%BORRADO%', 0, $query);
		//echo $query;
		$result = mysql_query($query);
		return parent::checkError($result);
	}

	
	function update($vo) {
		DBConnection::getInstance();
		
		$query = "UPDATE noticias SET ".
				"titulo ='%TITULO%', ".
				"tags ='%TAGS%', ".
				"resumen ='%RESUMEN%', ".
				"contenido ='%CONTENIDO%', ".
				"fecha ='%FECHA%', ".
				"categoria ='%CATEGORIA%', ".
				"seccion ='%SECCION%', ".
				"orden ='%ORDEN%', ".
				"visitas ='%VISITAS%', ".
				"activo ='%ACTIVO%', ".
				"borrado ='%BORRADO%'".
				" WHERE id =".$vo->getId();
		 
		$query = str_replace('%TITULO%', $vo->getTitulo(), $query);
		$query = str_replace('%TAGS%', $vo->getTags(), $query);
		$query = str_replace('%RESUMEN%', $vo->getResumen(), $query);
		$query = str_replace('%CONTENIDO%', $vo->getContenido(), $query);
		$query = str_replace('%FECHA%', $vo->getFecha(), $query);
		$query = str_replace('%CATEGORIA%', $vo->getCategoria(), $query);
		$query = str_replace('%SECCION%', $vo->getSeccion(), $query);
		$query = str_replace('%ORDEN%', $vo->getOrden(), $query);
		$query = str_replace('%VISITAS%', $vo->getVisitas(), $query);
		$query = str_replace('%ACTIVO%', 1, $query);
		$query = str_replace('%BORRADO%', 0, $query);
		//echo $query;
		$result = mysql_query($query);
		return parent::checkError($result);
	}

	
	function getConditions($criteria){
		if ($criteria->getTitulo() != null) {
			$conditions.= " AND titulo like '%".$criteria->getTitulo()."%'";
		}
		if ($criteria->getTags() != null) {
			$conditions.= " AND tags like '%".$criteria->getTags()."%'";
		}
		if ($criteria->getFechaFrom() != null && $criteria->getFechaTo() != null ) {
			$conditions.= " AND noticias.fecha >= '".$criteria->getFechaFrom()."' AND noticias.fecha < '".$criteria->getFechaTo()."'";
		}
		$conditions .= parent::getConditionsAbs($criteria, "noticias");
		return $conditions;
	}
	
	
	function getMaxId() {
		DBConnection::getInstance();
		$query = "SELECT id FROM noticias ORDER BY id DESC LIMIT 1";
		$result = mysql_query($query);
		$results = $this->getFromResult($result);
		return $results[0][id];  // no se por que, pero siempre retorna un valor menos
	}
	
	function getLastInsertId() {
		DBConnection::getInstance();
		$query = "SELECT LAST_INSERT_ID() as last_id";
		$result = mysql_query($query);
		$results = $this->getFromResult($result);
		return $results[0][last_id];		
	}
	
	function activar($id){
		DBConnection::getInstance();
		$query = "update noticias set activo = 1 WHERE id = $id";
		$result = mysql_query($query);
		return parent::checkError($result);
	}
	
	function desactivar($id){
		DBConnection::getInstance();
		$query = "update noticias set activo = 0 WHERE id = $id";
		$result = mysql_query($query);
		return parent::checkError($result);
	}


	
	
}
?>